<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>

<body>

  <div id="app">
    <!-- <button v-on:click="fn">弹一个</button> -->
    <!-- v-on:click="fn"可以简写成 @click=fn   -->

    <button @click="fn1">点我1</button>
    <!-- 一旦在给事件绑定事件函数的时候,添加了括号,事件函数不会直接调用,还是等事件触发的时候才调用 -->
    <!-- 但是此时，我们不能直接在形参中接收event事件对象了 -->
    <!-- 我们需要在绑定事件函数的小括号中，显性传递一个$event实参(在v-on绑定事件的插值语法中，默认是存在一个$event的值，代表当前的event事件对象)，
      将来在事件函数中接收，接收的这个值就是event事件对象 -->
    <button @click="fn2($event)">点我2</button>
    <!-- 传递多个参数时的情况 -->
    <button @click="fn3($event,2)">点我2</button>

  </div>


  <script>
    /* Vue.config 是一个对象，包含 Vue 的全局配置,设置为 false 以阻止 vue 在启动时生成生产提示。 */
    Vue.config.productionTip = false;

    const vm = new Vue({
      el: "#app",
      data () {
        return {
        };
      },

      /*
        事件函数不推荐写在data中
        - data中是数据存放的地方
        - 如果放在data中,vue并没有帮我们处理data中函数的this
      */
      //methods配置项,主要用来书写回调函数
      methods: {
        // fn () {
        //   /* 
        //     因为我们不需要直接操作DOM,所以事件回调函数的this不需要指向事件源
        //     而我们更需要的是控制数据,数据在Vue实例vm身上,所以事件的this都是指向vm的
        //   */
        //   console.log(this);
        //   alert("又来了老弟");
        // },



        fn1 (event) {
          console.log(event, "fn1");
        },
        fn2 (event) {
          console.log(event, "fn2");
        },
        fn3 (event, a) {
          console.log(event, "fn3");
        },



      },
    });
  </script>
</body>

</html>